SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paObtenerSubserviciosDelAgenteaLicenciar] 

@Documento INT,
@Organizacion INT = NULL, 
@Fecha DATETIME 

AS
SET NOCOUNT ON
SET DATEFORMAT DMY

DECLARE @HOY DATETIME
SET @HOY=CONVERT(VARCHAR(10), GETDATE(),103)

DECLARE @Modo INT
DECLARE @Reparticion INT 

SELECT @Modo = Modo, @Reparticion = IdReparticion FROM Tb_Usuarios WHERE NTUser = SYSTEM_USER



IF @Organizacion IS NULL
 	
	SELECT IdServicioAgente, IdAgente, Ag.Documento, Ag.Nombres AS ApellidosyNombres, SS.FechaAlta, SS.FechaBaja,
		SR.MNemo AS SituacionRevista,
		CASE WHEN (SA.EstaEnprocesodeTitularizacion is null or SA.EstaEnprocesodeTitularizacion = 'N') THEN 'N' ELSE 'S' END Titularizar,
	              SS.IdSubservicio, SA.UbicacionOrig AS IdOrganizacion, SS.IdPlaza, SS.CUPOF, L.Descripcion Licencia, SS.CodEnfermedad, SS.SituacionLaboral, 
	              SS.SituacionExtraordinaria, L2.Descripcion UltimaLicencia, SS2.FechaAlta FechaAltaUltimaLicencia, 
	              SS2.FechaBaja FechaBajaUltimaLicencia, IdRegimenSalarial, Horas, SS.IdRegimenSalarialPlaza, SS.IDSituacionLaboral
	 FROM Tb_ServiciosAgentes SA
	    INNER JOIN vwSubserviciosAgentesSF SS ON SA.IdServicioAgente = SS.ServicioAgente  	 
	    INNER JOIN Tb_Agentes Ag ON SA.Agente = Ag.IdAgente
	    INNER JOIN Tb_RegimenSalarial RS ON SA.RegimenSalarial = RS.IdRegimenSalarial
	    INNER JOIN Tb_Organizaciones Org ON SA.UbicacionOrig = Org.IdOrganizaciones 
	    INNER JOIN Tb_SituacionRevista SR ON SA.SituacionRevista = SR.IdSituacionRevista
	    LEFT OUTER JOIN vwrLicencias L ON L.ID = SS.Licencia 
	    LEFT OUTER JOIN Tb_SubServiciosAgentes SS2 ON SS2.ServicioAgente = SA.IdServicioAgente 
							AND SS2.FechaAlta = (SELECT MAX(FechaAlta) FROM Tb_SubServiciosAgentes SS3  WHERE SS3.ServicioAgente = SS2.ServicioAgente AND Licencia IS NOT NULL)
	    LEFT OUTER JOIN vwrLicencias L2 ON L2.ID = SS2.Licencia
	WHERE Documento = @Documento 
	      -- AND SS.IDSituacionLaboral=5 ----- Se quito el 23/07/2007 - porque se cambio el formato de la Pantalla
	      AND ((@Modo = 1 AND 1= 1) OR ( @Modo=2 AND SA.UbicacionOrig IN (SELECT IdOrganizacion  FROM tb_OrganizacionesporReparticion WHERE IdReparticion = @Reparticion )))
	      AND ((@Fecha = @HOY AND SS.FechaBaja IS NULL) 
	        OR (@Fecha <>@HOY AND SS.FechaBaja IS NOT NULL AND @Fecha >= SS.FechaAlta AND @Fecha <= SS.FechaBaja)
   	         OR  (@Fecha <> @HOY AND @Fecha >= SS.FechaAlta AND SS.FechaBaja IS NULL))	
	ORDER BY SS.FechaAlta

ELSE

	SELECT IdServicioAgente, IdAgente, Ag.Documento, Ag.Nombres AS ApellidosyNombres, SS.FechaAlta, SS.FechaBaja, SR.MNemo AS SituacionRevista,
		CASE WHEN (SA.EstaEnprocesodeTitularizacion is null or SA.EstaEnprocesodeTitularizacion = 'N') THEN 'N' ELSE 'S' END Titularizar,
	              SS.IdSubservicio, SA.UbicacionOrig AS IdOrganizacion, SS.IdPlaza, SS.CUPOF, L.Descripcion Licencia, SS.CodEnfermedad, SS.SituacionLaboral, 
	              SS.SituacionExtraordinaria, L2.Descripcion UltimaLicencia, SS2.FechaAlta FechaAltaUltimaLicencia, 
	              SS2.FechaBaja FechaBajaUltimaLicencia, IdRegimenSalarial, Horas, SS.IdRegimenSalarialPlaza, SS.IDSituacionLaboral
	 FROM Tb_ServiciosAgentes SA
	    INNER JOIN vwSubserviciosAgentesSF SS ON SA.IdServicioAgente = SS.ServicioAgente  	 
	    INNER JOIN Tb_Agentes Ag ON SA.Agente = Ag.IdAgente
	    INNER JOIN Tb_RegimenSalarial RS ON SA.RegimenSalarial = RS.IdRegimenSalarial
	    INNER JOIN Tb_Organizaciones Org ON SA.UbicacionOrig = Org.IdOrganizaciones
	    INNER JOIN Tb_SituacionRevista SR ON SA.SituacionRevista = SR.IdSituacionRevista
	    LEFT OUTER JOIN vwrLicencias L ON L.ID = SS.Licencia
	    LEFT OUTER JOIN Tb_SubServiciosAgentes SS2 ON SS2.ServicioAgente = SA.IdServicioAgente 
							AND SS2.FechaAlta = (SELECT MAX(FechaAlta) FROM Tb_SubServiciosAgentes SS3  WHERE SS3.ServicioAgente = SS2.ServicioAgente AND Licencia IS NOT NULL)
	    LEFT OUTER JOIN vwrLicencias L2 ON L2.ID = SS2.Licencia
	WHERE Documento = @Documento 
	      AND SS.CUISE = @Organizacion
	      -- AND SS.IDSituacionLaboral=5 ----- Se quito el 23/07/2007 - porque se cambio el formato de la Pantalla
	      AND ((@Fecha = @HOY AND SS.FechaBaja IS NULL) 
	        OR (@Fecha <> @HOY AND SS.FechaBaja IS NOT NULL AND @Fecha >= SS.FechaAlta AND @Fecha <= SS.FechaBaja)
                     OR  (@Fecha <> @HOY AND @Fecha >= SS.FechaAlta AND SS.FechaBaja IS NULL))
	ORDER BY SS.FechaAlta

/*   --- Cambiado el 04/07/2007 por lentitud, veamos que pasa
IF @Organizacion IS NULL
	SELECT IdServicioAgente, IdAgente, Documento, ApellidosYNombres, SS.FechaAlta, SS.FechaBaja, SituacionRevista,
	              SS.IdSubservicio, IdOrganizacion, SS.IdPlaza, SS.CUPOF, L.Descripcion Licencia, SS.CodEnfermedad, SS.SituacionLaboral, 
	              SS.SituacionExtraordinaria, L2.Descripcion UltimaLicencia, SS2.FechaAlta FechaAltaUltimaLicencia, 
	              SS2.FechaBaja FechaBajaUltimaLicencia, IdRegimenSalarial, Horas, SS.IdRegimenSalarialPlaza
	 FROM vwServiciosAgentesSF SA
	    INNER JOIN vwSubserviciosAgentesSF SS ON SA.IdServicioAgente = SS.ServicioAgente 	 
	    LEFT OUTER JOIN vwrLicencias L ON L.ID = SS.Licencia
	    LEFT OUTER JOIN vwSubserviciosAgentesSF SS2 ON SS2.ServicioAgente = SA.IdServicioAgente 
							AND SS2.FechaAlta = (SELECT MAX(FechaAlta) FROM vwSubserviciosAgentesSF SS3  WHERE SS3.ServicioAgente = SS2.ServicioAgente AND Licencia IS NOT NULL)
	    LEFT OUTER JOIN vwrLicencias L2 ON L2.ID = SS2.Licencia
	WHERE Documento = @Documento 
	      AND SS.IDSituacionLaboral NOT IN (1,4)
	      AND ((@Fecha = CONVERT(VARCHAR(10), GETDATE(),103) AND SS.FechaBaja IS NULL) 
	        OR (@Fecha <> CONVERT(VARCHAR(10), GETDATE(), 103) AND SS.FechaBaja IS NOT NULL AND @Fecha >= SS.FechaAlta AND @Fecha <= SS.FechaBaja))
	ORDER BY SS.FechaAlta

ELSE
	SELECT IdServicioAgente, IdAgente, Documento, ApellidosYNombres, SS.FechaAlta, SS.FechaBaja, SituacionRevista,
	              SS.IdSubservicio, IdOrganizacion, SS.IdPlaza, SS.CUPOF, L.Descripcion Licencia, SS.CodEnfermedad, SS.SituacionLaboral, 
	              SS.SituacionExtraordinaria, L2.Descripcion UltimaLicencia, SS2.FechaAlta FechaAltaUltimaLicencia, 
	              SS2.FechaBaja FechaBajaUltimaLicencia, IdRegimenSalarial, Horas, SS.IdRegimenSalarialPlaza
	 FROM vwServiciosAgentesSF SA
	    INNER JOIN vwSubserviciosAgentesSF SS ON SA.IdServicioAgente = SS.ServicioAgente 	 
	    LEFT OUTER JOIN vwrLicencias L ON L.ID = SS.Licencia
	    LEFT OUTER JOIN vwSubserviciosAgentesSF SS2 ON SS2.ServicioAgente = SA.IdServicioAgente 
							AND SS2.FechaAlta = (SELECT MAX(FechaAlta) FROM vwSubserviciosAgentesSF SS3  WHERE SS3.ServicioAgente = SS2.ServicioAgente AND Licencia IS NOT NULL)
	    LEFT OUTER JOIN vwrLicencias L2 ON L2.ID = SS2.Licencia
	WHERE Documento = @Documento 
	      AND SS.CUISE = @Organizacion
	      AND SS.IDSituacionLaboral NOT IN (1,4)
	      AND ((@Fecha = CONVERT(VARCHAR(10), GETDATE(),103) AND SS.FechaBaja IS NULL) 
	        OR (@Fecha <> CONVERT(VARCHAR(10), GETDATE(), 103) AND SS.FechaBaja IS NOT NULL AND @Fecha >= SS.FechaAlta AND @Fecha <= SS.FechaBaja))
	ORDER BY SS.FechaAlta
*/
GO
GRANT EXECUTE ON  [dbo].[paObtenerSubserviciosDelAgenteaLicenciar] TO [GestionInstitucional]
GRANT EXECUTE ON  [dbo].[paObtenerSubserviciosDelAgenteaLicenciar] TO [PersonalDocente]
GRANT EXECUTE ON  [dbo].[paObtenerSubserviciosDelAgenteaLicenciar] TO [PersonalDocenteDireccion]
GRANT EXECUTE ON  [dbo].[paObtenerSubserviciosDelAgenteaLicenciar] TO [SoloVer]
GO
